package com.hspedu.abstract_;

public class Abstract01 {
    public static void main(String[] args) {

    }
}

abstract class Animal{
    private String name;

    public Animal(String name){
        this.name = name;
    }

    /**
     * 所有动物都要吃东西，但是每种动物吃的东西都不知道吃什么，有不确定性，
     * 这样父类写eat()方法没什么意义
     *
     * 这时考虑将该方法设计为抽象(abstract)方法
     * 抽象方法就是没有实现的方法
     * 没有实现就是指没有方法体
     * 当一个类中存在抽象方法时，需要将给类声明为abstract类
     * 一般来说，抽象类会被继承，由其子类来实现抽象方法
     */
    /*
    public void eat(){
        System.out.println("这是一个动物，但是不知道吃什么。。");
    }
     */

    /**
     * 抽象类定义：
     * 当父类的一些方法不能确定时，可以用abstract关键字来修饰该方法，这个方法就是抽象方法，
     * 同时要用abstract来修饰该类，该类就是抽象类，
     * 抽象类主要用于设计，是设计者设计好之后让子类继承并实现抽象类
     *
     * 访问修饰符 abstract 返回类型 方法名(参数列表); //没有方法体
     */
    public abstract void eat();
}